/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.hochschild.sgv.util;

import com.hochschild.sgv.domain.Reporte;
import java.util.List;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFRichTextString;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.ss.usermodel.IndexedColors;

/**
 *
 * @author LENOVO
 */
public class ReporteVacacionesPlanificadasExcel {
  	private HSSFWorkbook wb =null;
	private HSSFFont fuenteTitulo1Linea = null;
        private HSSFFont fuenteTitulo1Des = null;
        private HSSFFont fuenteTitulo2Linea = null;
        private HSSFFont fuenteTitulo2Des = null;
        private HSSFFont fuentePlomo = null;
        private HSSFFont fuenteOrange = null;
        private HSSFFont fuenteCabecera = null;
        private HSSFFont fuenteData = null;
        private HSSFFont fuenteTituloReporte = null;

	private HSSFCellStyle estiloTitulo1Linea = null;
        private HSSFCellStyle estiloTitulo1Des = null;
        private HSSFCellStyle estiloTitulo2Linea = null;
        private HSSFCellStyle estiloTitulo2Des = null;
        private HSSFCellStyle estiloPlomo = null;
        private HSSFCellStyle estiloOrange = null;
        private HSSFCellStyle estiloWhite = null;
        private HSSFCellStyle estiloCabecera = null;
        private HSSFCellStyle estiloDataPlomo = null;
        private HSSFCellStyle estiloDataWhite = null;
        private HSSFCellStyle estiloDataBlack = null;

	private HSSFRow row = null;
	private HSSFCell cell = null;

        private void creaEstiloTitulo() {
            fuenteTitulo1Linea = wb.createFont();
            fuenteTitulo1Des = wb.createFont();
            fuenteTitulo2Linea = wb.createFont();
            fuenteTitulo2Des = wb.createFont();
            fuentePlomo = wb.createFont();
            fuenteOrange = wb.createFont();
            fuenteCabecera = wb.createFont();
            fuenteData = wb.createFont();

            fuenteTituloReporte = wb.createFont();

            estiloTitulo1Linea = wb.createCellStyle();
            estiloTitulo1Des = wb.createCellStyle();
            estiloTitulo2Linea = wb.createCellStyle();
            estiloTitulo2Des = wb.createCellStyle();
            estiloPlomo = wb.createCellStyle();
            estiloOrange = wb.createCellStyle();
            estiloWhite = wb.createCellStyle();
            estiloCabecera = wb.createCellStyle();
            estiloDataPlomo = wb.createCellStyle();
            estiloDataWhite = wb.createCellStyle();

            estiloDataBlack= wb.createCellStyle();

            //                 Fila Negra 1-3
            fuenteTitulo1Linea.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
            fuenteTitulo1Linea.setFontHeight((short) 130);
            estiloTitulo1Linea.setFont(fuenteTitulo1Linea);
            estiloTitulo1Linea.setFillForegroundColor((short) 0);
            estiloTitulo1Linea.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);

            //                 Fila Titulo 1
            fuenteTitulo1Des.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
            fuenteTitulo1Des.setColor(HSSFColor.WHITE.index);
            fuenteTitulo1Des.setFontHeight((short) 250);
            estiloTitulo1Des.setFont(fuenteTitulo1Des);
            estiloTitulo1Des.setFillForegroundColor((short) 0);
            estiloTitulo1Des.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);

            //                 Fila Plomo
            fuentePlomo.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
            fuentePlomo.setFontHeight((short) 5);
            estiloPlomo.setFont(fuentePlomo);
            estiloPlomo.setFillForegroundColor(HSSFColor.GREY_25_PERCENT.index);
            estiloPlomo.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);

            //               Fila Orange
            fuenteOrange.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
            fuenteOrange.setFontHeight((short) 20);
            estiloOrange.setFont(fuenteOrange);
            estiloOrange.setFillForegroundColor(IndexedColors.GOLD.getIndex());
            estiloOrange.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);

            //                 Fila 5-6
            fuenteTitulo2Linea.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
            fuenteTitulo2Linea.setFontHeight((short) 100);
            estiloTitulo2Linea.setFont(fuenteTitulo2Linea);
            estiloTitulo2Linea.setFillForegroundColor((short) 0);
            estiloTitulo2Linea.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);

            //                 Fila Titulo 2
            fuenteTitulo2Des.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
            fuenteTitulo2Des.setColor(HSSFColor.WHITE.index);
            fuenteTitulo2Des.setFontHeight((short) 180);
            estiloTitulo2Des.setFont(fuenteTitulo2Des);
            estiloTitulo2Des.setFillForegroundColor((short) 0);
            estiloTitulo2Des.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);

            //                 Fila White
            estiloWhite.setFillForegroundColor(HSSFColor.WHITE.index);
            estiloWhite.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);

            //                 Fila Data Black
            fuenteTituloReporte.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
            fuenteTituloReporte.setColor(HSSFColor.BLACK.index);

            fuenteTituloReporte.setFontHeight((short) 200);
            estiloDataBlack.setWrapText(true);
            estiloDataBlack.setAlignment(HSSFCellStyle. ALIGN_JUSTIFY);
            estiloDataBlack.setVerticalAlignment(HSSFCellStyle.VERTICAL_TOP);
            estiloDataBlack.setFont(fuenteCabecera);
            estiloDataBlack.setFillForegroundColor(HSSFColor.WHITE.index);
            estiloDataBlack.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);

            //                 Fila Cabecera
            fuenteCabecera.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
            fuenteCabecera.setColor(HSSFColor.BLACK.index);

            fuenteCabecera.setFontHeight((short) 200);
            estiloCabecera.setWrapText(true);
            estiloCabecera.setAlignment(HSSFCellStyle. ALIGN_JUSTIFY);
            estiloCabecera.setVerticalAlignment(HSSFCellStyle.VERTICAL_TOP);
            estiloCabecera.setFont(fuenteCabecera);
            estiloCabecera.setFillForegroundColor(HSSFColor.GREY_40_PERCENT.index);
            estiloCabecera.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);

            estiloCabecera.setBorderBottom(HSSFCellStyle.BORDER_THIN);
            estiloCabecera.setBottomBorderColor((short)8);
            estiloCabecera.setBorderLeft(HSSFCellStyle.BORDER_THIN);
            estiloCabecera.setLeftBorderColor((short)8);
            estiloCabecera.setBorderRight(HSSFCellStyle.BORDER_THIN);
            estiloCabecera.setRightBorderColor((short)8);
            estiloCabecera.setBorderTop(HSSFCellStyle.BORDER_THIN);
            estiloCabecera.setTopBorderColor((short)8);

            //                 fuenteData
            //                 fuenteData.setColor(HSSFColor.BLACK.index);
            fuenteData.setFontHeight((short) 180);

            //                 DataWhite
            estiloDataWhite.setWrapText(true);
            estiloDataWhite.setAlignment(HSSFCellStyle. ALIGN_JUSTIFY);
            estiloDataWhite.setVerticalAlignment(HSSFCellStyle.VERTICAL_TOP);
            estiloDataWhite.setFont(fuenteData);
            estiloDataWhite.setFillForegroundColor(HSSFColor.WHITE.index);
            estiloDataWhite.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);

            estiloDataWhite.setBorderBottom(HSSFCellStyle.BORDER_THIN);
            estiloDataWhite.setBottomBorderColor((short)8);
            estiloDataWhite.setBorderLeft(HSSFCellStyle.BORDER_THIN);
            estiloDataWhite.setLeftBorderColor((short)8);
            estiloDataWhite.setBorderRight(HSSFCellStyle.BORDER_THIN);
            estiloDataWhite.setRightBorderColor((short)8);
            estiloDataWhite.setBorderTop(HSSFCellStyle.BORDER_THIN);
            estiloDataWhite.setTopBorderColor((short)8);

            //                 DataPlomo
            estiloDataPlomo.setWrapText(true);
            estiloDataPlomo.setAlignment(HSSFCellStyle. ALIGN_JUSTIFY);
            estiloDataPlomo.setVerticalAlignment(HSSFCellStyle.VERTICAL_TOP);
            estiloDataPlomo.setFont(fuenteData);
            estiloDataPlomo.setFillForegroundColor(HSSFColor.GREY_25_PERCENT.index);
            estiloDataPlomo.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);

            estiloDataPlomo.setBorderBottom(HSSFCellStyle.BORDER_THIN);
            estiloDataPlomo.setBottomBorderColor((short)8);
            estiloDataPlomo.setBorderLeft(HSSFCellStyle.BORDER_THIN);
            estiloDataPlomo.setLeftBorderColor((short)8);
            estiloDataPlomo.setBorderRight(HSSFCellStyle.BORDER_THIN);
            estiloDataPlomo.setRightBorderColor((short)8);
            estiloDataPlomo.setBorderTop(HSSFCellStyle.BORDER_THIN);
            estiloDataPlomo.setTopBorderColor((short)8);

            estiloTitulo1Des.setAlignment(HSSFCellStyle.ALIGN_LEFT);
            estiloTitulo2Des.setAlignment(HSSFCellStyle.ALIGN_LEFT);
            estiloTitulo2Des.setVerticalAlignment((short)1);
            estiloCabecera.setAlignment(HSSFCellStyle.ALIGN_CENTER);
            estiloDataWhite.setAlignment(HSSFCellStyle.ALIGN_CENTER);
            estiloDataPlomo.setAlignment(HSSFCellStyle.ALIGN_CENTER);
        }

        public HSSFWorkbook createWorkbook( List<Reporte> lstReportes) throws Exception {
            wb = new HSSFWorkbook();
            HSSFSheet sheet = wb.createSheet("Reporte Vacaciones Planificadas");
            
            int index = 7;
            int indiceListaReporte = 0;
            HSSFCellStyle estilo = null;
            creaEstiloTitulo();
            
            //Fila Negra
            row = sheet.createRow(0);   row.setRowStyle(estiloTitulo1Linea);
            cell = row.createCell(0);   cell.setCellStyle(estiloTitulo1Linea);

//          Fila Negra con encabezado
            row = sheet.createRow(1);  row.setRowStyle(estiloTitulo1Des);
            cell = row.createCell(0);  cell.setCellStyle(estiloTitulo1Des);
            cell.setCellValue(new HSSFRichTextString("GESTIÓN DE VACACIONES"));

//          Fila Negra
            row = sheet.createRow(2);   row.setRowStyle(estiloTitulo1Linea);
            cell = row.createCell(0);   cell.setCellStyle(estiloTitulo1Linea);

//          Fila Orange
            row = sheet.createRow(3);
            row.setRowStyle(estiloOrange);
            row.setHeight((short)75);

//          Fila Negra con encabezado
            row = sheet.createRow(4);  row.setRowStyle(estiloTitulo2Des);
            cell = row.createCell(0);  cell.setCellStyle(estiloTitulo2Des);
            cell.setCellValue(new HSSFRichTextString("REPORTE VACACIONES PLANIFICADAS"));
            row.setHeight((short)350);

//          Fila white
            row = sheet.createRow(5);   row.setRowStyle(estiloWhite);

//          fila Cabecera
            row = sheet.createRow(6);   row.setRowStyle(estiloCabecera);
            row.setHeight((short)700);
            sheet.setColumnWidth(0, 8000);
            sheet.setColumnWidth(1, 8000);
            sheet.setColumnWidth(2, 8000);
            sheet.setColumnWidth(3, 8000);
            sheet.setColumnWidth(4, 8000);
            sheet.setColumnWidth(5, 3000);
            sheet.setColumnWidth(6, 3000);
            sheet.setColumnWidth(7, 3000);

            cell = row.createCell(0);
            cell.setCellStyle(estiloCabecera);
            cell.setCellValue(new HSSFRichTextString("Nombre Colaborador"));

            cell = row.createCell(1);
            cell.setCellStyle(estiloCabecera);
            cell.setCellValue(new HSSFRichTextString("Posición"));

            cell = row.createCell(2);
            cell.setCellStyle(estiloCabecera);
            cell.setCellValue(new HSSFRichTextString("Nombre Aprobador"));

            cell = row.createCell(3);
            cell.setCellStyle(estiloCabecera);
            cell.setCellValue(new HSSFRichTextString("Posición"));

            cell = row.createCell(4);
            cell.setCellStyle(estiloCabecera);
            cell.setCellValue(new HSSFRichTextString("Área"));

            cell = row.createCell(5);
            cell.setCellStyle(estiloCabecera);
            cell.setCellValue(new HSSFRichTextString("Fec. Inicio"));

            cell = row.createCell(6);
            cell.setCellStyle(estiloCabecera);
            cell.setCellValue(new HSSFRichTextString("Fec. Fin"));

            cell = row.createCell(7);
            cell.setCellStyle(estiloCabecera);
            cell.setCellValue(new HSSFRichTextString("N° Días"));

            for (Reporte reporte : lstReportes) {
                row = sheet.createRow(index);
                HSSFRichTextString nombreColaborador = new HSSFRichTextString(reporte.getNombreColaborador());
                HSSFRichTextString puestoColaborador = new HSSFRichTextString(reporte.getPuestoColaborador());
                HSSFRichTextString nombreAprobador = new HSSFRichTextString(reporte.getNombreAprobador());
                HSSFRichTextString puestoAprobador = new HSSFRichTextString(reporte.getPuestoAprobador());
                HSSFRichTextString area = new HSSFRichTextString(reporte.getAreaColaborador());
                HSSFRichTextString fechaInicio = new HSSFRichTextString(reporte.getFechaInicio());
                HSSFRichTextString fechaFin = new HSSFRichTextString(reporte.getFechaFin());
                HSSFRichTextString numeroDias = new HSSFRichTextString(reporte.getNumeroDias());

                if(indiceListaReporte > 0){
                    if(!lstReportes.get(indiceListaReporte).getNombreColaborador().equals(lstReportes.get(indiceListaReporte-1).getNombreColaborador())){
                        if(estilo.equals(estiloDataWhite)){
                            estilo = estiloDataPlomo;
                        }
                        else{
                            estilo = estiloDataWhite;
                        }
                    }
                }
                 else{
                    estilo = estiloDataWhite;
                 }

                /*
                if (index%2==0) {
                    estilo = estiloDataPlomo;
                }
                else{
                    estilo = estiloDataWhite;
                }*/

                row.setRowStyle(estilo);

                cell = row.createCell(0);
                cell.setCellValue(nombreColaborador);
                cell.setCellStyle(estilo);

                cell = row.createCell(1);
                cell.setCellValue(puestoColaborador);
                cell.setCellStyle(estilo);

                cell = row.createCell(2);
                cell.setCellValue(nombreAprobador);
                cell.setCellStyle(estilo);

                cell = row.createCell(3);
                cell.setCellValue(puestoAprobador);
                cell.setCellStyle(estilo);

                cell = row.createCell(4);
                cell.setCellValue(area);
                cell.setCellStyle(estilo);

                cell = row.createCell(5);
                cell.setCellValue(fechaInicio);
                cell.setCellStyle(estilo);

                cell = row.createCell(6);
                cell.setCellValue(fechaFin);
                cell.setCellStyle(estilo);

                cell = row.createCell(7);
                cell.setCellValue(numeroDias);
                cell.setCellStyle(estilo);

                index++;
                indiceListaReporte++;
            }

            return wb;
        }

        public HSSFWorkbook createWorkbookSaldo( List<Reporte> lstReportes) throws Exception {
            wb = new HSSFWorkbook();
            HSSFSheet sheet = wb.createSheet("Reporte Saldo Vacaciones");
            int index = 7;
            int indiceListaReporte = 0;
            HSSFCellStyle estilo = null;
            creaEstiloTitulo();

            //Fila Negra
            row = sheet.createRow(0);   row.setRowStyle(estiloTitulo1Linea);
            cell = row.createCell(0);   cell.setCellStyle(estiloTitulo1Linea);

//          Fila Negra con encabezado
            row = sheet.createRow(1);  row.setRowStyle(estiloTitulo1Des);
            cell = row.createCell(0);  cell.setCellStyle(estiloTitulo1Des);
            cell.setCellValue(new HSSFRichTextString("GESTIÓN DE VACACIONES"));

//          Fila Negra
            row = sheet.createRow(2);   row.setRowStyle(estiloTitulo1Linea);
            cell = row.createCell(0);   cell.setCellStyle(estiloTitulo1Linea);

//          Fila Orange
            row = sheet.createRow(3);
            row.setRowStyle(estiloOrange);
            row.setHeight((short)75);

//          Fila Negra con encabezado
            row = sheet.createRow(4);  row.setRowStyle(estiloTitulo2Des);
            cell = row.createCell(0);  cell.setCellStyle(estiloTitulo2Des);
            cell.setCellValue(new HSSFRichTextString("REPORTE SALDO DE VACACIONES"));
            row.setHeight((short)350);

//          Fila white
            row = sheet.createRow(5);   row.setRowStyle(estiloWhite);

//          fila Cabecera
            row = sheet.createRow(6);   row.setRowStyle(estiloCabecera);
            row.setHeight((short)700);
            sheet.setColumnWidth(0, 8000);
            sheet.setColumnWidth(1, 8000);
            sheet.setColumnWidth(2, 8000);
            sheet.setColumnWidth(3, 8000);
            sheet.setColumnWidth(4, 8000);
            sheet.setColumnWidth(5, 3000);
            sheet.setColumnWidth(6, 3000);
            sheet.setColumnWidth(7, 3000);

            cell = row.createCell(0);
            cell.setCellStyle(estiloCabecera);
            cell.setCellValue(new HSSFRichTextString("Nombre Colaborador"));

            cell = row.createCell(1);
            cell.setCellStyle(estiloCabecera);
            cell.setCellValue(new HSSFRichTextString("Posición"));

            cell = row.createCell(2);
            cell.setCellStyle(estiloCabecera);
            cell.setCellValue(new HSSFRichTextString("Nombre Aprobador"));

            cell = row.createCell(3);
            cell.setCellStyle(estiloCabecera);
            cell.setCellValue(new HSSFRichTextString("Posición"));

            cell = row.createCell(4);
            cell.setCellStyle(estiloCabecera);
            cell.setCellValue(new HSSFRichTextString("Área"));

            cell = row.createCell(5);
            cell.setCellStyle(estiloCabecera);
            cell.setCellValue(new HSSFRichTextString("Saldo"));          

            for (Reporte reporte : lstReportes) {
                row = sheet.createRow(index);
                HSSFRichTextString nombreColaborador = new HSSFRichTextString(reporte.getNombreColaborador());
                HSSFRichTextString puestoColaborador = new HSSFRichTextString(reporte.getPuestoColaborador());
                HSSFRichTextString nombreAprobador = new HSSFRichTextString(reporte.getNombreAprobador());
                HSSFRichTextString puestoAprobador = new HSSFRichTextString(reporte.getPuestoAprobador());
                HSSFRichTextString area = new HSSFRichTextString(reporte.getAreaColaborador());
                HSSFRichTextString numeroDias = new HSSFRichTextString(reporte.getNumeroDias());

                if(indiceListaReporte > 0){
                    if(!lstReportes.get(indiceListaReporte).getNombreColaborador().equals(lstReportes.get(indiceListaReporte-1).getNombreColaborador())){
                        if(estilo.equals(estiloDataWhite)){
                            estilo = estiloDataPlomo;
                        }
                        else{
                            estilo = estiloDataWhite;
                        }
                    }
                }
                 else{
                    estilo = estiloDataWhite;
                 }

                row.setRowStyle(estilo);

                cell = row.createCell(0);
                cell.setCellValue(nombreColaborador);
                cell.setCellStyle(estilo);

                cell = row.createCell(1);
                cell.setCellValue(puestoColaborador);
                cell.setCellStyle(estilo);

                cell = row.createCell(2);
                cell.setCellValue(nombreAprobador);
                cell.setCellStyle(estilo);

                cell = row.createCell(3);
                cell.setCellValue(puestoAprobador);
                cell.setCellStyle(estilo);

                cell = row.createCell(4);
                cell.setCellValue(area);
                cell.setCellStyle(estilo);

                cell = row.createCell(5);
                cell.setCellValue(numeroDias);
                cell.setCellStyle(estilo);

                index++;
                indiceListaReporte++;
            }

            return wb;
        }

    public HSSFWorkbook createWorkbookVacacionesRegistradas( List<Reporte> lstReportes) throws Exception {
            wb = new HSSFWorkbook();
            HSSFSheet sheet = wb.createSheet("Reporte Vacaciones");
            int index = 7;
            int indiceListaReporte = 0;
            HSSFCellStyle estilo = null;
            creaEstiloTitulo();

            //Fila Negra
            row = sheet.createRow(0);   row.setRowStyle(estiloTitulo1Linea);
            cell = row.createCell(0);   cell.setCellStyle(estiloTitulo1Linea);

//          Fila Negra con encabezado
            row = sheet.createRow(1);  row.setRowStyle(estiloTitulo1Des);
            cell = row.createCell(0);  cell.setCellStyle(estiloTitulo1Des);
            cell.setCellValue(new HSSFRichTextString("GESTIÓN DE VACACIONES"));

//          Fila Negra
            row = sheet.createRow(2);   row.setRowStyle(estiloTitulo1Linea);
            cell = row.createCell(0);   cell.setCellStyle(estiloTitulo1Linea);

//          Fila Orange
            row = sheet.createRow(3);
            row.setRowStyle(estiloOrange);
            row.setHeight((short)75);

//          Fila Negra con encabezado
            row = sheet.createRow(4);  row.setRowStyle(estiloTitulo2Des);
            cell = row.createCell(0);  cell.setCellStyle(estiloTitulo2Des);
            cell.setCellValue(new HSSFRichTextString("REPORTE VACACIONES"));
            row.setHeight((short)350);

//          Fila white
            row = sheet.createRow(5);   row.setRowStyle(estiloWhite);

//          fila Cabecera
            row = sheet.createRow(6);   row.setRowStyle(estiloCabecera);
            row.setHeight((short)700);
            sheet.setColumnWidth(0, 8000);
            sheet.setColumnWidth(1, 8000);
            sheet.setColumnWidth(2, 8000);
            sheet.setColumnWidth(3, 8000);
            sheet.setColumnWidth(4, 8000);
            sheet.setColumnWidth(5, 3000);
            sheet.setColumnWidth(6, 3000);
            sheet.setColumnWidth(7, 3000);

            cell = row.createCell(0);
            cell.setCellStyle(estiloCabecera);
            cell.setCellValue(new HSSFRichTextString("Nombre Colaborador"));

            cell = row.createCell(1);
            cell.setCellStyle(estiloCabecera);
            cell.setCellValue(new HSSFRichTextString("Posición"));

            cell = row.createCell(2);
            cell.setCellStyle(estiloCabecera);
            cell.setCellValue(new HSSFRichTextString("Nombre Aprobador"));

            cell = row.createCell(3);
            cell.setCellStyle(estiloCabecera);
            cell.setCellValue(new HSSFRichTextString("Posición"));

            cell = row.createCell(4);
            cell.setCellStyle(estiloCabecera);
            cell.setCellValue(new HSSFRichTextString("Área"));

            cell = row.createCell(5);
            cell.setCellStyle(estiloCabecera);
            cell.setCellValue(new HSSFRichTextString("Fec. Inicio"));

            cell = row.createCell(6);
            cell.setCellStyle(estiloCabecera);
            cell.setCellValue(new HSSFRichTextString("Fec. Fin"));

            cell = row.createCell(7);
            cell.setCellStyle(estiloCabecera);
            cell.setCellValue(new HSSFRichTextString("N° Días"));

            for (Reporte reporte : lstReportes) {
                row = sheet.createRow(index);
                HSSFRichTextString nombreColaborador = new HSSFRichTextString(reporte.getNombreColaborador());
                HSSFRichTextString puestoColaborador = new HSSFRichTextString(reporte.getPuestoColaborador());
                HSSFRichTextString nombreAprobador = new HSSFRichTextString(reporte.getNombreAprobador());
                HSSFRichTextString puestoAprobador = new HSSFRichTextString(reporte.getPuestoAprobador());
                HSSFRichTextString area = new HSSFRichTextString(reporte.getAreaColaborador());
                HSSFRichTextString fechaInicio = new HSSFRichTextString(reporte.getFechaInicio());
                HSSFRichTextString fechaFin = new HSSFRichTextString(reporte.getFechaFin());
                HSSFRichTextString numeroDias = new HSSFRichTextString(reporte.getNumeroDias());

                if(indiceListaReporte > 0){
                    if(!lstReportes.get(indiceListaReporte).getNombreColaborador().equals(lstReportes.get(indiceListaReporte-1).getNombreColaborador())){
                        if(estilo.equals(estiloDataWhite)){
                            estilo = estiloDataPlomo;
                        }
                        else{
                            estilo = estiloDataWhite;
                        }
                    }
                }
                 else{
                    estilo = estiloDataWhite;
                 }

                row.setRowStyle(estilo);

                cell = row.createCell(0);
                cell.setCellValue(nombreColaborador);
                cell.setCellStyle(estilo);

                cell = row.createCell(1);
                cell.setCellValue(puestoColaborador);
                cell.setCellStyle(estilo);

                cell = row.createCell(2);
                cell.setCellValue(nombreAprobador);
                cell.setCellStyle(estilo);

                cell = row.createCell(3);
                cell.setCellValue(puestoAprobador);
                cell.setCellStyle(estilo);

                cell = row.createCell(4);
                cell.setCellValue(area);
                cell.setCellStyle(estilo);

                cell = row.createCell(5);
                cell.setCellValue(fechaInicio);
                cell.setCellStyle(estilo);

                cell = row.createCell(6);
                cell.setCellValue(fechaFin);
                cell.setCellStyle(estilo);

                cell = row.createCell(7);
                cell.setCellValue(numeroDias);
                cell.setCellStyle(estilo);

                index++;
                indiceListaReporte++;
            }

            return wb;
        }
    
    public HSSFWorkbook createWorkbookStatus( List<Reporte> lstReportes) throws Exception {
            wb = new HSSFWorkbook();
            HSSFSheet sheet = wb.createSheet("Reporte Status de Planificación");
            int index = 7;
            int indiceListaReporte = 0;
            HSSFCellStyle estilo = null;
            creaEstiloTitulo();

            //Fila Negra
            row = sheet.createRow(0);   row.setRowStyle(estiloTitulo1Linea);
            cell = row.createCell(0);   cell.setCellStyle(estiloTitulo1Linea);

//          Fila Negra con encabezado
            row = sheet.createRow(1);  row.setRowStyle(estiloTitulo1Des);
            cell = row.createCell(0);  cell.setCellStyle(estiloTitulo1Des);
            cell.setCellValue(new HSSFRichTextString("GESTIÓN DE VACACIONES"));

//          Fila Negra
            row = sheet.createRow(2);   row.setRowStyle(estiloTitulo1Linea);
            cell = row.createCell(0);   cell.setCellStyle(estiloTitulo1Linea);

//          Fila Orange
            row = sheet.createRow(3);
            row.setRowStyle(estiloOrange);
            row.setHeight((short)75);

//          Fila Negra con encabezado
            row = sheet.createRow(4);  row.setRowStyle(estiloTitulo2Des);
            cell = row.createCell(0);  cell.setCellStyle(estiloTitulo2Des);
            cell.setCellValue(new HSSFRichTextString("REPORTE STATUS DE PLANIFICACIÓN"));
            row.setHeight((short)350);

//          Fila white
            row = sheet.createRow(5);   row.setRowStyle(estiloWhite);

//          fila Cabecera
            row = sheet.createRow(6);   row.setRowStyle(estiloCabecera);
            row.setHeight((short)700);
            sheet.setColumnWidth(0, 8000);
            sheet.setColumnWidth(1, 8000);
            sheet.setColumnWidth(2, 8000);
            sheet.setColumnWidth(3, 8000);
            sheet.setColumnWidth(4, 8000);
            sheet.setColumnWidth(5, 3000);
            sheet.setColumnWidth(6, 3000);
            sheet.setColumnWidth(7, 3000);

            cell = row.createCell(0);
            cell.setCellStyle(estiloCabecera);
            cell.setCellValue(new HSSFRichTextString("Nombre Colaborador"));

            cell = row.createCell(1);
            cell.setCellStyle(estiloCabecera);
            cell.setCellValue(new HSSFRichTextString("Posición"));

            cell = row.createCell(2);
            cell.setCellStyle(estiloCabecera);
            cell.setCellValue(new HSSFRichTextString("Nombre Aprobador"));

            cell = row.createCell(3);
            cell.setCellStyle(estiloCabecera);
            cell.setCellValue(new HSSFRichTextString("Posición"));

            cell = row.createCell(4);
            cell.setCellStyle(estiloCabecera);
            cell.setCellValue(new HSSFRichTextString("Área"));

            cell = row.createCell(5);
            cell.setCellStyle(estiloCabecera);
            cell.setCellValue(new HSSFRichTextString("Status"));

            for (Reporte reporte : lstReportes) {
                row = sheet.createRow(index);
                HSSFRichTextString nombreColaborador = new HSSFRichTextString(reporte.getNombreColaborador());
                HSSFRichTextString puestoColaborador = new HSSFRichTextString(reporte.getPuestoColaborador());
                HSSFRichTextString nombreAprobador = new HSSFRichTextString(reporte.getNombreAprobador());
                HSSFRichTextString puestoAprobador = new HSSFRichTextString(reporte.getPuestoAprobador());
                HSSFRichTextString area = new HSSFRichTextString(reporte.getAreaColaborador());
                HSSFRichTextString estado = new HSSFRichTextString(reporte.getEstado());

                if(indiceListaReporte > 0){
                    if(!lstReportes.get(indiceListaReporte).getNombreColaborador().equals(lstReportes.get(indiceListaReporte-1).getNombreColaborador())){
                        if(estilo.equals(estiloDataWhite)){
                            estilo = estiloDataPlomo;
                        }
                        else{
                            estilo = estiloDataWhite;
                        }
                    }
                }
                 else{
                    estilo = estiloDataWhite;
                 }

                row.setRowStyle(estilo);

                cell = row.createCell(0);
                cell.setCellValue(nombreColaborador);
                cell.setCellStyle(estilo);

                cell = row.createCell(1);
                cell.setCellValue(puestoColaborador);
                cell.setCellStyle(estilo);

                cell = row.createCell(2);
                cell.setCellValue(nombreAprobador);
                cell.setCellStyle(estilo);

                cell = row.createCell(3);
                cell.setCellValue(puestoAprobador);
                cell.setCellStyle(estilo);

                cell = row.createCell(4);
                cell.setCellValue(area);
                cell.setCellStyle(estilo);

                cell = row.createCell(5);
                cell.setCellValue(estado);
                cell.setCellStyle(estilo);

                index++;
                indiceListaReporte++;
            }

            return wb;
        }
}